package cn.iocoder.yudao.module.ems.controller.admin.equipment.vo;

import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
* 设备 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
*/
@Data
public class EquipmentBaseVO {

    @ApiModelProperty(value = "资产编号")
    private String assetNo;

    @ApiModelProperty(value = "设备名称", required = true)
    @NotNull(message = "设备名称不能为空")
    private String name;

    @ApiModelProperty(value = "规格型号")
    private String specification;

    @ApiModelProperty(value = "电子标签码")
    private String tagCode;

    @ApiModelProperty(value = "单位")
    private String unit;

    @ApiModelProperty(value = "类别", required = true)
    @NotNull(message = "类别不能为空")
    private Long typeId;

    @ApiModelProperty(value = "设备来源")
    private Integer source;

    @ApiModelProperty(value = "采购金额")
    private Long purchaseAmount;

    @ApiModelProperty(value = "购置日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private Date purchaseDate;

    @ApiModelProperty(value = "保修期至")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private Date warrantyPeriod;

    @ApiModelProperty(value = "启用时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private Date enableTime;

    @ApiModelProperty(value = "预计报废日期")
    private Date estimatedLife;

    @ApiModelProperty(value = "设备状态", required = true)
    @NotNull(message = "设备状态不能为空")
    private Integer eqStatus;

    @ApiModelProperty(value = "使用状态", required = true)
    @NotNull(message = "使用状态不能为空")
    private Integer usageStatus;

    @ApiModelProperty(value = "设备等级", required = true)
    @NotNull(message = "设备等级不能为空")
    private Integer level;

    @ApiModelProperty(value = "序列号")
    private String serialNo;

    @ApiModelProperty(value = "负责人", required = true)
    @NotNull(message = "负责人不能为空")
    private Long personLiable;

    @ApiModelProperty(value = "所属部门", required = true)
    @NotNull(message = "所属部门不能为空")
    private Long deptId;

    @ApiModelProperty(value = "品牌")
    private String brand;

    @ApiModelProperty(value = "供应商")
    private Long supplierId;

    @ApiModelProperty(value = "附件")
    private String enclosure;

    @ApiModelProperty(value = "图片")
    private String image;

    @ApiModelProperty(value = "技术参数")
    private String parameter;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "父设备")
    private Set<Long> parentIds;

    @ApiModelProperty(value = "子设备")
    private Set<Long> sonIds;

}
